using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Rotempco.Core.ORM.Interfaces;
using Rotempco.Core.ORM.Objects;

namespace Rotempco.Core.Web.CRUD.ACRUD
{
    public abstract class ACRUDManager<TDomainObject, TPrimaryKey> : IDAL<TDomainObject, TPrimaryKey> where TPrimaryKey : struct
    {
        public abstract TDomainObject GetById(TPrimaryKey id, bool getDeleted = false);
        public abstract void WriteToDB(TDomainObject instance);

        public void Delete(TPrimaryKey id, bool forceDelete = false)
        {
            throw new NotImplementedException();
        }

        public void Restore(TPrimaryKey id)
        {
            throw new NotImplementedException();
        }

        public List<TDomainObject> GetAll(bool getDeleted = false)
        {
            throw new NotImplementedException();
        }

        public List<TDomainObject> GetByIds(List<TPrimaryKey> idList, bool getDeleted = false)
        {
            throw new NotImplementedException();
        }

        public List<TDomainObject> GetBy(List<PropertyPair> propertyPairList, bool getDeleted = true, long? getFirstEntries = null, long? getLastEntries = null, List<NullablePair> nullablePairList = null)
        {
            throw new NotImplementedException();
        }

        public TDomainObject GetByParameterName(string identifierParameter, object identifierParameterValue)
        {
            throw new NotImplementedException();
        }

        public TPrimaryKey DomainIdValue(TDomainObject domainObject)
        {
            throw new NotImplementedException();
        }

        public List<TDomainObject> GetDeleted()
        {
            throw new NotImplementedException();
        }

    }
}